﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuizGUI
{
    /// <summary>
    /// Een simpele inputdialog om dingen te vragen aan de gebruiker.
    /// </summary>
    /// <author>Werner Goossens</author>
    public partial class InputDialog : Form
    {
        string input_text;
        bool numReq;

        public string ResultText
        {
            get { return input_text; }
            private set { input_text = value; }
        }

        /// <summary>
        /// constructor
        /// </summary>
        /// <param name="title">titel van de dialog</param>
        /// <param name="label_text">tekst in de label</param>
        /// <param name="textbox_string">eventueel tekst in tekstbox</param>
        /// <param name="pNumRequired">boolean om een nummerieke waarde te controleren</param>
        /// <author>Werner Goossens</author>
        public InputDialog(string title, string label_text, string textbox_string, bool pNumRequired = false)
        {
            InitializeComponent();

            this.Text = title;
            this.lblInput.Text = label_text;
            this.txtInput.Text = textbox_string;
            this.numReq = pNumRequired;
        }

        public InputDialog()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Methode laat de gebruiker enkel verder wanneer de tekstbox minstens één teken bevat
        /// </summary>
        /// <author>Werner Goossens</author>
        private void txtInput_TextChanged(object sender, EventArgs e)
        {
            if (txtInput.Text.Trim().Length > 0)
            {
                btnOk.Enabled = true;
            }
            else
            {
                btnOk.Enabled = false;
            }
        }

        /// <summary>
        /// Handelt het klikken op de 'Ok'-knop,
        /// waarbij eventueel een controle op numerieke waarde wordt gedaan
        /// </summary>
        /// <author>Werner Goossens</author>
        private void btnOk_Click(object sender, EventArgs e)
        {
            ResultText = txtInput.Text.Trim();

            int tempNum;

            if (numReq && !int.TryParse(txtInput.Text, out tempNum))
            {
                DialogResult dResult = MessageBox.Show("Gelieve een geldige score op te geven, om te sluiten gelieve 0 in te geven",
                    "Foutmelding", MessageBoxButtons.OK);
            }
            else
            {
                this.Visible = false;
            }

        }
    }

}
